package org.nf.trading.dao;

import org.apache.ibatis.annotations.Param;
import org.nf.trading.entity.Product;

import java.util.List;

public interface ProductMapper {
    /**
     * 通过用户id查询发布的商品
     * @param uid
     * @return
     */
    List<Product> listProductsByUid(Integer uid);

    /**
     * 减库存
     * @param productId
     * @param number
     * @return
     */
    int minusStock(@Param("productId") Integer productId,@Param("number") Integer number);

    /**
     * 回滚库存
     * @param productId
     * @param number
     * @return
     */
    int rollbackStock(@Param("productId") Integer productId,@Param("number") Integer number);

    /**
     * 通过条件查询是否有发布商品
     * @param uid
     * @param status
     * @return
     */
    int countUserIsRelease(@Param("uid") Integer uid, @Param("status") Integer status);

    /**
     * 通过商品状态查询全部商品
     * @param status
     * @return
     */
    List<Product> getProductByStatus(Integer status);

    /**
     * 通过商品分类详细id查询全部商品
     * @param productTypeDetailId
     * @return
     */
    List<Product> getProductByTypeDetailId(Integer productTypeDetailId);

    int deleteByPrimaryKey(Integer productId);

    int insert(Product record);

    Product selectByPrimaryKey(Integer productId);

    List<Product> selectAll();

    int updateByPrimaryKey(Product record);

    /**
     * 商品查询
     * @param product
     * @return
     */
    List<Product> selectAllProduct(@Param("pageNum") Integer pageNum,@Param("pageSize") Integer pageSize,@Param("product") Product product);

    // 审核商品信息：修改商品的状态即可
    void updateProductStatus(@Param("pid") Integer pid,@Param("status") Integer status);
}